'''正则表达式'''
'''
元字符
.      通配符除了\n

^     以什么开始的匹配

$     以什么结尾的匹配

*     重复前一个条件,最少0个，[0,∞]

+     重复前一个条件，最少1个，[1,∞]

？   重复前面的条件，最少0个，最多1个[0,1]

{x}  重复前面的x次，x为数字，{x,y}最少x次，最多y-1次，{x,}最少x次，最多不限

|     或的意思

\ 反斜杠后跟元字符去除特殊功能

    \. 就是匹配点.

    \+ 匹配+

    \\\\ 匹配\ 等于 r“\\"

    r是代表原生字符，不需要python转义就传入re

  反斜杠后跟普通字符实现特殊功能

    \d 代表数字0-9  [0-9]

    \D 代表非数字0-9 [^0-9]

    \s 代表匹配空白字符[\t\n\r\f\v] 

    \S 代表匹配非空白字符 [^\t\n\r\f\v]

    \w 代表匹配非空白字符[a-zA-Z0-9]

    \W 代表匹配非非字母和数字[^a-zA-Z0-9]

    \d 代表匹配一个特殊边界，如匹配单词

字符集
[ ]代表字符集

    [a,b,c] 匹配a或b或c中任意一个

    [a-z]   匹配a到z中的任意小型字母 [A-Za-z0-9]

     - 代表什么到什么之间

    ^取反的意思，非

    \ 将特殊符号转换成普通字符

    注：字符集内取消元字符的特殊功能（\ ^ -除外）

    [a-z,*] 匹配a-z的字母或*号,还有，号

    [^a-z] 匹配非a-z的字母的所有

分组
  （）代表分组

    (1|2)  匹配1或2的字符

    (?P<id>\w) 匹配一个字母或数字 这个组的名称是ID

    (:?\d+) 取消分组的权限

正则表达式方法
    findall(规则,字符串) 寻找所有满足规则的元素

    search(规则,字符串) 寻找第一个满足规则的元素并返回一个对象，配合group() 显示内容
    
    match 从头开始匹配并返回 一个对象
    split 分隔
    sub 替换   
    re.sub('\d+'，'A',"1561gh48OII")
    re.sub('\d+'，'A',"1561gh48OII"，4) #4为匹配的次数、即将4个数字替换为一个A  --> AghAOII
    compile 可以转换成迭代器
'''